package com.leigq.www.mybatisplusstudy.domain.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.leigq.www.mybatisplusstudy.constant.TableNameConstants;
import com.leigq.www.mybatisplusstudy.domain.entity.base.UpdateWithVersionEntity;
import lombok.*;
import lombok.experimental.FieldNameConstants;
import lombok.experimental.SuperBuilder;

/**
 * 员工表
 * Created by Mybatis Generator 2019/06/14
 *
 * @author leiguoqing
 */
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
@SuperBuilder
@FieldNameConstants(level = AccessLevel.PRIVATE)
@TableName(value = TableNameConstants.DEPARTMENT)
public class Department extends UpdateWithVersionEntity {

    /**
     * 名称
     */
    @TableField(value = "name")
    private String name;

    /**
     * 员工数量
     */
    @TableField(value = "staff_num")
    private Integer staffNum;


    /**
     * 表字段名称，带表名称前缀，例如 department.name, 给自定义MP SQL使用
     */
    public interface TableColumns {
        /**
         * The constant name.
         */
        String NAME = getColumn(Fields.name);

        /**
         * The constant staffNum.
         */
        String STAFF_NUM = getColumn(Fields.staffNum);

        // 自行添加更多，如果数据库和实体里面的名字不一样，则 getColumn() 里面直接传数据库的字段名....
    }


    /**
     * 获取表字段名称，一定要带表名称前缀，例如 staff.name, 给自定义MP SQL使用
     *
     * @param fieldName 实体类中的属性名称，如果数据库和实体里面的名字不一样，则直接传数据库的字段名
     * @return the column name
     */
    private static String getColumn(String fieldName) {
        return TableNameConstants.DEPARTMENT + "." + getColumnName(fieldName);
    }
}